<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Crispy Plotter Source Code Overview</title>
<meta http-equiv="Content-Type" 
content="text/html; charset=iso-8859-1">
<style type="text/css"> 
<!-- p 
{ text-align: justify; } .code { font-family: "Courier New", Courier, 
mono; color: #333333; } --> 
</style>
</head>
<body> 
<h1>Crispy Plotter Source Code Overview</h1> 
<p>Version 1.6 </p> 
<p><strong>Contents </strong></p> 
<p>
  1.Introduction <br> 
  2.File Structure <br> 
  3.Source Structure <br> 
&nbsp;&nbsp;&nbsp;3.1 Getting the source compiled <br> 
&nbsp;&nbsp;&nbsp;3.2 Components <br> 
&nbsp;&nbsp;&nbsp;3.3 General <br> 
&nbsp;&nbsp;&nbsp;3.4 Plotter <br> 
&nbsp;&nbsp;&nbsp;3.5 Parser <br> 
&nbsp;&nbsp;&nbsp;3.6 Library <br> 
&nbsp;&nbsp;&nbsp;3.7 Plug-ins <br> 
&nbsp;&nbsp;&nbsp;3.8 Plug-ins Server Side <br> 
&nbsp;&nbsp;&nbsp;3.9 Plug-ins Client Side <br> 
  4.License Information<br> 
  5.Contact </p> 
<h2>1. Introduction </h2>

<p>Welcome to the source code of Crispy Plotter and thanks in advance for your interest in this little geek tool :). Intentionally I began to write CP in the year 2003, simply because I needed a straightforward tool to display a function graph. Back then I still had to hardcode the function I wanted draw and recompile CP, so I quickly decided to write a parser. Later I added multiple graphs, OpenGL mode, plug-in capability and the function library. However Crispy Plotter's main focus still is plotting speed and an intuitive interface. </p> 
<p>With version 1.5, CP features a reworked interface with dockable tool windows. Also the management of function files as documents has been improved. Now that the interface is done I am planning to add 3D plots and probably extend the parser to support assignment of temporary variables. </p> 
<p>If you have any questions concerning the source code or Crispy Plotter in general or you have a cool idea for a feature you would like to see in CP or you would like to participate, feel free to contact me, <a 
href="mailto:kk _at_ crispy-cow _dot_ de?subject=Crispy%20Plotter%20Source%20Code"> kk _at_ crispy-cow _dot_ de</a>. </p> 
<h2>2. File Structure </h2> 
<p>The sub folders of source archive have the following content: </p> 
<ul>
<li><span 
class="code">bin</span>: Binary application files
</li> 
<li><span 
class="code">dcu</span>: Output folder for compiled units
</li> 
<li><span 
class="code">doc</span>: HTML source code documentation (Created with pasdoc)
</li> 
<li><span class="code">install</span>: Installer script (made with NSIS, see <a href="http://nsis.sf.net/">http://nsis.sf.net </a>)
</li> 
<li><span class="code">manual</span>: PHP source files of manual (see Readme.txt for more info)
</li> 
<li><span 
class="code">res</span>: Resources, mostly images and icons, not needed for compilation
</li> 
<li><span class="code">src</span>: Source code
</li> 
</ul>
<h2>3. Source Structure </h2> 

<p>Generally the existing source runs stable and is in my opinion in good condition regarding coding style. Although it could use some better commenting here and there, the parts I consider to be headache-producing (mainly parser routines) are quite well documented. </p> 
<p>The plug-in handler is not very powerful at the moment and only provides basic functions for plug-ins, so they are doomed to be minimalist tools so far. </p> 
<p>The source code can be separated into 8 parts: </p> 
  <ol> 
    <li>Components (see package <span 
class="code">src\CPControls\CPControls.dpk</span>) </li> 
    <li>VCL Forms (<span class="code">src\Forms</span>) </li> 
    <li>Internationalization (<span class="code">src\I18n</span>) <br> 
      2 classes that provide translation of form components.</li> 
    <li>Plotter (<span 
class="code">src\Plotter</span>) </li> 
    <li>Parser (<span 
class="code">src\Parser</span>) </li> 
    <li>Code for different tasks (<span class="code">src\General</span>) </li> 
    <li>Plugins (<span 
class="code">src\Plugins</span>) </li> 
  </ol> 
  <p>More detailed information can be found in the source documentation (see doc folder). </p> 
  <h3>3.1 Getting the source compiled </h3> 
  <p>Extract the complete contents of the source archive into one directory. The src dir contains all the source files. </p> 
  <ol> 
    <li>Install the package CPControls.dpk. Make sure the components LinkLabel, ColorFadeBar and WorkspaceView are successfully registered. </li> 
    <li>Crispy Plotter uses the Toolbar2000 components developed by Jordan Russell. These components can be downloaded on the website of Jordan Russell ( <a 
href="http://www.jrsoftware.org/">www.jrsoftware.org </a>). Install the package suitable for your Delphi version and make sure the components are registered correctly. </li> 
    <li>Compilation should run successful now. If you encounter a problem then please send me a mail (<a 
href="mailto:kk _at_ crispy-cow _dot_ de?subject=Crispy%20Plotter%20Source%20Code"> kk _at_ crispy-cow _dot_ de</a>). </li> 
  </ol> 
  <h3>3.2 Components </h3> 
  <p>Crispy Plotter uses three additional components, which are stored inside the package CPControls.dpk: LinkLabel, ColorFadeBar and WorkspaceView. TLinkLabel is a specialized, interactive TCustomLabel, which can be clicked to execute a file or document. Since it uses ShellExecute(), it can open URLs or start an e-mail client as well. TColorFadeBar is also similar to TLabel: It displays a color gradient background with static text. The text can be indented, displayed with or without shadow and the control itself can be displayed with a raised or sunken bevel. WorkspaceView is a derived tree view control. It shows the contents of a file folder. On key press or button click files can be executed, moved, deleted or copied. </p> 
  <h2>4. License Information </h2> 
  <p>See License.txt for a full copy of the GPL.</p> 
  <p> Crispy Plotter, a fast and easy-to-use function plotter<br> 
    Copyright &copy; 2009 Konrad K&ouml;lzer </p> 
  <p> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. <br> 
    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. <br> 
  </p> 
  <h2>5. Contact </h2> 
  <p>If you have questions about source issues discussed here or more likely about source issues not discussed here, feel free to contact me, Konrad K&ouml;lzer, the original author of Crispy Plotter (<a 
href="mailto:kk _at_ crispy-cow _dot_ de?subject=Crispy%20Plotter%20Source%20Code"> kk _at_ crispy-cow _dot_ de</a>). </p> 
  <p>No matter if you just found a bug, have a suggestion or you would like to participate in developing Crispy Plotter or its plug-ins: Feel free to contact.</p> 
  <p>If you would like to help in translating Crispy Plotter check out the section "Contribution" in the Crispy Plotter manual (in folder bin\Manual). </p> 
  <p>Check out the Crispy Plotter Project Page on SourceForge at <a 
href="http://www.sourceforge.net/projects/cplotter">http://www.sourceforge.net/projects/cplotter </a>. </p> 
</body>
</html>
